package com.zwxu.stack;

import java.util.Stack;

/*
 * ([)]  栈好处在于 弹出的最后进入的那个元素     
 */
public class ValidParenthesesDemo {
	public static boolean isOdd(int n){
		if(n%2 != 0){
			return true;
		}
		return false;
	}
	
	public static boolean isValidParentheses(String s) {
		Stack<Character> st = new Stack<Character>();
		if(isOdd(s.length())){
			return false;
		}else{
			for(int i=0;i<s.length();i++){
				if(st.isEmpty()){
					st.push(s.charAt(i));
				}else{
					if(isMatch(st.peek(),s.charAt(i))){
						st.pop();
					}else{
	                    st.push(s.charAt(i));//不配对入栈
	                }
				}
			}
		}
		return st.isEmpty();
	}
	
	public static boolean isMatch(char a, char b){
        switch(a){
            case '(': if(b == ')') return true; else return false;
            case '{': if(b == '}') return true; else return false;
            case '[': if(b == ']') return true; else return false;
            default : return false;
        }
    }
	
	public static void main(String[] args) {
		System.out.print(isValidParentheses("([)]"));
	}
}
